{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "1. PE\n",
    "\n",
    "PE（Price earnings ratio，即 P/E ratio）也就是“市价盈利比率”，简称“市盈率”，常被用来评估股价水平是否合理。通俗点说，在公司盈利能力不变的情况下，PE代表了买下一个公司需要多少年就可以回本。通常股票PE的计算方法是：\n",
    "\n",
    "PE = 股价 / 每股盈利\n",
    "\n",
    "或者\n",
    "\n",
    "PE = (股价 * 股本数) / (每股盈利 * 股本数) = 市值 / 公司净利润\n",
    "\n",
    "\n",
    "只需要阅读公司财报，知道去年公司的总股本、净利润，以及当前的股价就可以计算上市公司的PE。但是我们经常提到的指数PE怎样计算？\n",
    "\n",
    "\n",
    "指数由多家公司通过一定的加权规则编制而成，指数PE代表了按照公司权重买下这个指数中的所有公司后，需要多少年回本。假设一个指数中有n个公司，第i个公司的权重为Wi，PE为PEi，那么指数PE的计算方法是：\n",
    "\n",
    "指数PE = 1 / sum(Wi/PEi)\n",
    "\n",
    "\n",
    "看起来公式很简单，只需要 Wi 和 PEi 就可以了对不对？实际上会遇到什么问题呢？\n",
    "\n",
    "\n",
    "通常情况下我们从指数公司官网能知道指数的编制方式，但是在指数编制规则中会加入各种各样的特殊处理和限制条件，所以你无法从指数编制方法中得到准确的指数权重信息。指数权重数据属于指数编制的核心信息，通常需要向指数公司付费才能得知。严格意义上来说，没有准确的指数权重数据，我们无法计算准确的指数PE。但是如果你付不起这个费用该怎么办？用以下方法近似求解：\n",
    "\n",
    "市值加权\n",
    "市值加权是目前A股指数中最常见的一种加权方式，市值加权的指数可以不用准确的指数权重数据，直接采用市值加权的方式近似计算。假设指数中第i个公司的市值为Mi，净利润为Ei，市值加权指数PE计算方法是：\n",
    "\n",
    "指数PE = sum(Mi) / sum(Ei)\n",
    "\n",
    "是不是一下就简单了好多？\n",
    "\n",
    "2. 等权计算\n",
    "\n",
    "等权指数也就是指数中每个样本股所占的权重相同，实际操作中，等权指数并不会每天保持样本股权重相同，还会定期调整权重，但是依然可以用等权方法近似计算。假设指数中共有n个公司，其中第i个公司的PE为PEi，等权指数PE计算方法为：\n",
    "指数PE = n / sum(1/PEi)\n",
    "是不是也简单很多？\n",
    "\n",
    "\n",
    "3. 因子加权\n",
    "\n",
    "一些指数在编制方案中采用风格因子加权，比如股息率、波动率等因子。这些因子的具体数据很难查到，不妨用上面讲的市值加权或者等权计算方法来近似计算，但是计算结果的可信度会稍差一些。\n",
    "\n",
    "最后提醒：即使简单的计算方法也需要有准确的基础数据才能保证计算结果准确，而上面公式中提到的基础数据有各种各样的坑需要处理。如果有人想尝试自己计算指数PE，务必小心谨慎一些。\n",
    "\n",
    "4. 总结\n",
    "\n",
    "市场整体市盈率用于衡量一组股票价格高低的整体水平，通常整体市盈率有三种算法： 总股本加权法、等权平均法、中位数法。\n",
    "\n",
    "三种算法各有优缺点，总股本加权法容易受到大股本股票的影响，等权平均法也叫算术平均法容易受到微利股票的影响，而中位数法容易受到样本数和样本分布的影响。\n",
    "\n",
    "总股本加权法是以股票的总股本作为权重，对每只股票的价格和每股收益进行加总计算，即一组股票的总市值除以总收益。算术平均法是取多只股票市盈率的简单算术平均数。中位数法则是多只股票市盈率排序后取中间的那个数值。\n",
    "\n",
    "5. 参考\n",
    "\n",
    "https://legulegu.com/stockdata/market_pe"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": false,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": false,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
